/*-
 * Copyright (c) 2010 Kai Wang
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");

#include <sys/param.h>
#include "uhidd.h"

static const char *_usage_consumer[] = {
/*==========================================*/
/* Usage ID      Usage Name                 */
/*==========================================*/
/*   0 */	"Unassigned",
/*   1 */	"Consumer_Control",
/*   2 */	"Numeric_Key_Pad",
/*   3 */	"Programmable_Buttons",
/*   4 */	"Microphone",
/*   5 */	"Headphone",
/*   6 */	"Graphic_Equalizer",
/*   7 */	"Reserved",
/*   8 */	"Reserved",
/*   9 */	"Reserved",
/*   A */	"Reserved",
/*   B */	"Reserved",
/*   C */	"Reserved",
/*   D */	"Reserved",
/*   E */	"Reserved",
/*   F */	"Reserved",
/*  10 */	"Reserved",
/*  11 */	"Reserved",
/*  12 */	"Reserved",
/*  13 */	"Reserved",
/*  14 */	"Reserved",
/*  15 */	"Reserved",
/*  16 */	"Reserved",
/*  17 */	"Reserved",
/*  18 */	"Reserved",
/*  19 */	"Reserved",
/*  1A */	"Reserved",
/*  1B */	"Reserved",
/*  1C */	"Reserved",
/*  1D */	"Reserved",
/*  1E */	"Reserved",
/*  1F */	"Reserved",
/*  20 */	"Plus_Ten",	/* +10 */
/*  21 */	"Plus_Hundred",	/* +100 */
/*  22 */	"AM/PM",
/*  23 */	"Reserved",
/*  24 */	"Reserved",
/*  25 */	"Reserved",
/*  26 */	"Reserved",
/*  27 */	"Reserved",
/*  28 */	"Reserved",
/*  29 */	"Reserved",
/*  2A */	"Reserved",
/*  2B */	"Reserved",
/*  2C */	"Reserved",
/*  2D */	"Reserved",
/*  2E */	"Reserved",
/*  2F */	"Reserved",
/*  30 */	"Power",
/*  31 */	"Reset",
/*  32 */	"Sleep",
/*  33 */	"Sleep_After",
/*  34 */	"Sleep_Mode",
/*  35 */	"Illumination",
/*  36 */	"Function_Buttons",
/*  37 */	"Reserved",
/*  38 */	"Reserved",
/*  39 */	"Reserved",
/*  3A */	"Reserved",
/*  3B */	"Reserved",
/*  3C */	"Reserved",
/*  3D */	"Reserved",
/*  3E */	"Reserved",
/*  3F */	"Reserved",
/*  40 */	"Menu",
/*  41 */	"Menu_Pick",
/*  42 */	"Menu_Up",
/*  43 */	"Menu_Down",
/*  44 */	"Menu_Left",
/*  45 */	"Menu_Right",
/*  46 */	"Menu_Escape",
/*  47 */	"Menu_Value_Increase",
/*  48 */	"Menu_Value_Decrease",
/*  49 */	"Reserved",
/*  4A */	"Reserved",
/*  4B */	"Reserved",
/*  4C */	"Reserved",
/*  4D */	"Reserved",
/*  4E */	"Reserved",
/*  4F */	"Reserved",
/*  50 */	"Reserved",
/*  51 */	"Reserved",
/*  52 */	"Reserved",
/*  53 */	"Reserved",
/*  54 */	"Reserved",
/*  55 */	"Reserved",
/*  56 */	"Reserved",
/*  57 */	"Reserved",
/*  58 */	"Reserved",
/*  59 */	"Reserved",
/*  5A */	"Reserved",
/*  5B */	"Reserved",
/*  5C */	"Reserved",
/*  5D */	"Reserved",
/*  5E */	"Reserved",
/*  5F */	"Reserved",
/*  60 */	"Data_On_Screen",
/*  61 */	"Closed_Caption",
/*  62 */	"Closed_Caption_Select",
/*  63 */	"VCR/TV",
/*  64 */	"Broadcast_Mode",
/*  65 */	"Snapshot",
/*  66 */	"Still",
/*  67 */	"Reserved",
/*  68 */	"Reserved",
/*  69 */	"Reserved",
/*  6A */	"Reserved",
/*  6B */	"Reserved",
/*  6C */	"Reserved",
/*  6D */	"Reserved",
/*  6E */	"Reserved",
/*  6F */	"Reserved",
/*  70 */	"Reserved",
/*  71 */	"Reserved",
/*  72 */	"Reserved",
/*  73 */	"Reserved",
/*  74 */	"Reserved",
/*  75 */	"Reserved",
/*  76 */	"Reserved",
/*  77 */	"Reserved",
/*  78 */	"Reserved",
/*  79 */	"Reserved",
/*  7A */	"Reserved",
/*  7B */	"Reserved",
/*  7C */	"Reserved",
/*  7D */	"Reserved",
/*  7E */	"Reserved",
/*  7F */	"Reserved",
/*  80 */	"Selection",
/*  81 */	"Assign_Selection",
/*  82 */	"Mode_Step",
/*  83 */	"Recall_Last",
/*  84 */	"Enter_Channel",
/*  85 */	"Order_Movie",
/*  86 */	"Channel",
/*  87 */	"Media_Selection",
/*  88 */	"Media_Select_Computer",
/*  89 */	"Media_Select_TV",
/*  8A */	"Media_Select_WWW",
/*  8B */	"Media_Select_DVD",
/*  8C */	"Media_Select_Telephone",
/*  8D */	"Media_Select_Program_Guide",
/*  8E */	"Media_Select_Video_Phone",
/*  8F */	"Media_Select_Games",
/*  90 */	"Media_Select_Messages",
/*  91 */	"Media_Select_CD",
/*  92 */	"Media_Select_VCR",
/*  93 */	"Media_Select_Tuner",
/*  94 */	"Quit",
/*  95 */	"Help",
/*  96 */	"Media_Select_Tape",
/*  97 */	"Media_Select_Cable",
/*  98 */	"Media_Select_Satellite",
/*  99 */	"Media_Select_Security",
/*  9A */	"Media_Select_Home",
/*  9B */	"Media_Select_Call",
/*  9C */	"Channel_Increment",
/*  9D */	"Channel_Decrement",
/*  9E */	"Media_Select_SAP",
/*  9F */	"Reserved",
/*  A0 */	"VCR_Plus",
/*  A1 */	"Once",
/*  A2 */	"Daily",
/*  A3 */	"Weekly",
/*  A4 */	"Monthly",
/*  A5 */	"Reserved",
/*  A6 */	"Reserved",
/*  A7 */	"Reserved",
/*  A8 */	"Reserved",
/*  A9 */	"Reserved",
/*  AA */	"Reserved",
/*  AB */	"Reserved",
/*  AC */	"Reserved",
/*  AD */	"Reserved",
/*  AE */	"Reserved",
/*  AF */	"Reserved",
/*  B0 */	"Play",
/*  B1 */	"Pause",
/*  B2 */	"Record",
/*  B3 */	"Fast_Forward",
/*  B4 */	"Rewind",
/*  B5 */	"Scan_Next_Track",
/*  B6 */	"Scan_Previous_Track",
/*  B7 */	"Stop",
/*  B8 */	"Eject",
/*  B9 */	"Random_Play",
/*  BA */	"Select_Disc",
/*  BB */	"Enter_Disc",
/*  BC */	"Repeat",
/*  BD */	"Tracking",
/*  BE */	"Track_Normal",
/*  BF */	"Slow_Tracking",
/*  C0 */	"Frame_Forward",
/*  C1 */	"Frame_Back",
/*  C2 */	"Mark",
/*  C3 */	"Clear_Mark",
/*  C4 */	"Repeat_From_Mark",
/*  C5 */	"Return_To_Mark",
/*  C6 */	"Search_Mark_Forward",
/*  C7 */	"Search_Mark_Backwards",
/*  C8 */	"Counter_Reset",
/*  C9 */	"Show_Counter",
/*  CA */	"Tracking_Increment",
/*  CB */	"Tracking_Decrement",
/*  CC */	"Stop/Eject",
/*  CD */	"Play/Pause",
/*  CE */	"Play/Skip",
/*  CF */	"Reserved",
/*  D0 */	"Reserved",
/*  D1 */	"Reserved",
/*  D2 */	"Reserved",
/*  D3 */	"Reserved",
/*  D4 */	"Reserved",
/*  D5 */	"Reserved",
/*  D6 */	"Reserved",
/*  D7 */	"Reserved",
/*  D8 */	"Reserved",
/*  D9 */	"Reserved",
/*  DA */	"Reserved",
/*  DB */	"Reserved",
/*  DC */	"Reserved",
/*  DD */	"Reserved",
/*  DE */	"Reserved",
/*  DF */	"Reserved",
/*  E0 */	"Volume",
/*  E1 */	"Balance",
/*  E2 */	"Mute",
/*  E3 */	"Bass",
/*  E4 */	"Treble",
/*  E5 */	"Bass_Boost",
/*  E6 */	"Surround_Mode",
/*  E7 */	"Loudness",
/*  E8 */	"MPX",
/*  E9 */	"Volume_Increment",
/*  EA */	"Volume_Decrement",
/*  EB */	"Reserved",
/*  EC */	"Reserved",
/*  ED */	"Reserved",
/*  EE */	"Reserved",
/*  EF */	"Reserved",
/*  F0 */	"Speed_Select",
/*  F1 */	"Playback_Speed",
/*  F2 */	"Standard_Play",
/*  F3 */	"Long_Play",
/*  F4 */	"Extended_Play",
/*  F5 */	"Slow",
/*  F6 */	"Reserved",
/*  F7 */	"Reserved",
/*  F8 */	"Reserved",
/*  F9 */	"Reserved",
/*  FA */	"Reserved",
/*  FB */	"Reserved",
/*  FC */	"Reserved",
/*  FD */	"Reserved",
/*  FE */	"Reserved",
/*  FF */	"Reserved",
/* 100 */	"Fan_Enable",
/* 101 */	"Fan_Speed",
/* 102 */	"Light_Enable",
/* 103 */	"Light_Illumination_Level",
/* 104 */	"Climate_Control_Enable",
/* 105 */	"Room_Temperature",
/* 106 */	"Security_Enable",
/* 107 */	"Fire_Alarm",
/* 108 */	"Police_Alarm",
/* 109 */	"Proximity",
/* 10A */	"Motion",
/* 10B */	"Duress_Alarm",
/* 10C */	"Holdup_Alarm",
/* 10D */	"Medical_Alarm",
/* 10E */	"Reserved",
/* 10F */	"Reserved",
/* 110 */	"Reserved",
/* 111 */	"Reserved",
/* 112 */	"Reserved",
/* 113 */	"Reserved",
/* 114 */	"Reserved",
/* 115 */	"Reserved",
/* 116 */	"Reserved",
/* 117 */	"Reserved",
/* 118 */	"Reserved",
/* 119 */	"Reserved",
/* 11A */	"Reserved",
/* 11B */	"Reserved",
/* 11C */	"Reserved",
/* 11D */	"Reserved",
/* 11E */	"Reserved",
/* 11F */	"Reserved",
/* 120 */	"Reserved",
/* 121 */	"Reserved",
/* 122 */	"Reserved",
/* 123 */	"Reserved",
/* 124 */	"Reserved",
/* 125 */	"Reserved",
/* 126 */	"Reserved",
/* 127 */	"Reserved",
/* 128 */	"Reserved",
/* 129 */	"Reserved",
/* 12A */	"Reserved",
/* 12B */	"Reserved",
/* 12C */	"Reserved",
/* 12D */	"Reserved",
/* 12E */	"Reserved",
/* 12F */	"Reserved",
/* 130 */	"Reserved",
/* 131 */	"Reserved",
/* 132 */	"Reserved",
/* 133 */	"Reserved",
/* 134 */	"Reserved",
/* 135 */	"Reserved",
/* 136 */	"Reserved",
/* 137 */	"Reserved",
/* 138 */	"Reserved",
/* 139 */	"Reserved",
/* 13A */	"Reserved",
/* 13B */	"Reserved",
/* 13C */	"Reserved",
/* 13D */	"Reserved",
/* 13E */	"Reserved",
/* 13F */	"Reserved",
/* 140 */	"Reserved",
/* 141 */	"Reserved",
/* 142 */	"Reserved",
/* 143 */	"Reserved",
/* 144 */	"Reserved",
/* 145 */	"Reserved",
/* 146 */	"Reserved",
/* 147 */	"Reserved",
/* 148 */	"Reserved",
/* 149 */	"Reserved",
/* 14A */	"Reserved",
/* 14B */	"Reserved",
/* 14C */	"Reserved",
/* 14D */	"Reserved",
/* 14E */	"Reserved",
/* 14F */	"Reserved",
/* 150 */	"Balance_Right",
/* 151 */	"Balance_Left",
/* 152 */	"Bass_Increment",
/* 153 */	"Bass_Decrement",
/* 154 */	"Treble_Increment",
/* 155 */	"Treble_Decrement",
/* 156 */	"Reserved",
/* 157 */	"Reserved",
/* 158 */	"Reserved",
/* 159 */	"Reserved",
/* 15A */	"Reserved",
/* 15B */	"Reserved",
/* 15C */	"Reserved",
/* 15D */	"Reserved",
/* 15E */	"Reserved",
/* 15F */	"Reserved",
/* 160 */	"Speaker_System",
/* 161 */	"Channel_Left",
/* 162 */	"Channel_Right",
/* 163 */	"Channel_Center",
/* 164 */	"Channel_Front",
/* 165 */	"Channel_Center_Front",
/* 166 */	"Channel_Side",
/* 167 */	"Channel_Surround",
/* 168 */	"Channel_Low_Frequency_Enhancement",
/* 169 */	"Channel_Top",
/* 16A */	"Channel_Unknown",
/* 16B */	"Reserved",
/* 16C */	"Reserved",
/* 16D */	"Reserved",
/* 16E */	"Reserved",
/* 16F */	"Reserved",
/* 170 */	"Sub-channel",
/* 171 */	"Sub-channel_Increment",
/* 172 */	"Sub-channel_Decrement",
/* 173 */	"Alternate_Audio_Increment",
/* 174 */	"Alternate_Audio_Decrement",
/* 175 */	"Reserved",
/* 176 */	"Reserved",
/* 177 */	"Reserved",
/* 178 */	"Reserved",
/* 179 */	"Reserved",
/* 17A */	"Reserved",
/* 17B */	"Reserved",
/* 17C */	"Reserved",
/* 17D */	"Reserved",
/* 17E */	"Reserved",
/* 17F */	"Reserved",
/* 180 */	"Application_Launch_Buttons",
/* 181 */	"AL_Launch_Button_Configuration_Tool",
/* 182 */	"AL_Programmable_Button_Configuration",
/* 183 */	"AL_Consumer_Control_Configuration",
/* 184 */	"AL_Word_Processor",
/* 185 */	"AL_Text_Editor",
/* 186 */	"AL_Spreadsheet",
/* 187 */	"AL_Graphics_Editor",
/* 188 */	"AL_Presentation_App",
/* 189 */	"AL_Database_App",
/* 18A */	"AL_Email_Reader",
/* 18B */	"AL_Newsreader",
/* 18C */	"AL_Voicemail",
/* 18D */	"AL_Contacts/Address_Book",
/* 18E */	"AL_Calendar/Schedule",
/* 18F */	"AL_Task/Project_Manager",
/* 190 */	"AL_Log/Journal/Timecard",
/* 191 */	"AL_Checkbook/Finance",
/* 192 */	"AL_Calculator",
/* 193 */	"AL_A/V_Capture/Playback",
/* 194 */	"AL_Local_Machine_Browser",
/* 195 */	"AL_LAN/WAN_Browser",
/* 196 */	"AL_Internet_Browser",
/* 197 */	"AL_Remote_Networking/ISP_Connect",
/* 198 */	"AL_Network_Conference",
/* 199 */	"AL_Network_Chat",
/* 19A */	"AL_Telephony/Dialer",
/* 19B */	"AL_Logon",
/* 19C */	"AL_Logoff",
/* 19D */	"AL_Logon/Logoff",
/* 19E */	"AL_Terminal_Lock/Screensaver",
/* 19F */	"AL_Control_Panel",
/* 1A0 */	"AL_Command_Line_Processor/Run",
/* 1A1 */	"AL_Process/Task_Manager",
/* 1A2 */	"AL_Select_Task/Application",
/* 1A3 */	"AL_Next_Task/Application",
/* 1A4 */	"AL_Previous_Task/Application",
/* 1A5 */	"AL_Preemptive_Halt",
/* 1A6 */	"AL_Integrated_Help_Center",
/* 1A7 */	"AL_Documents",
/* 1A8 */	"AL_Thesaurus",
/* 1A9 */	"AL_Dictionary",
/* 1AA */	"AL_Desktop",
/* 1AB */	"AL_Spell_Check",
/* 1AC */	"AL_Grammar_Check",
/* 1AD */	"AL_Wireless_Status",
/* 1AE */	"AL_Keyboard_Layout",
/* 1AF */	"AL_Virus_Protection",
/* 1B0 */	"AL_Encryption",
/* 1B1 */	"AL_Screen_Saver",
/* 1B2 */	"AL_Alarms",
/* 1B3 */	"AL_Clock",
/* 1B4 */	"AL_File_Browser",
/* 1B5 */	"AL_Power_Status",
/* 1B6 */	"AL_Image_Browser",
/* 1B7 */	"AL_Audio_Browser",
/* 1B8 */	"AL_Movie_Browser",
/* 1B9 */	"AL_Digital_Rights_Manager",
/* 1BA */	"AL_Digital_Wallet",
/* 1BB */	"Reserved",
/* 1BC */	"AL_Instant_Messaging",
/* 1BD */	"AL_OEM_Features/_Tips/Tutorial_Browser",
/* 1BE */	"AL_OEM_Help",
/* 1BF */	"AL_Online_Community",
/* 1C0 */	"AL_Entertainment_Content_Browser",
/* 1C1 */	"AL_Online_Shopping_Browser",
/* 1C2 */	"AL_SmartCard_Information/Help",
/* 1C3 */	"AL_Market_Monitor/Finance_Browser",
/* 1C4 */	"AL_Customized_Corporate_News_Browser",
/* 1C5 */	"AL_Online_Activity_Browser",
/* 1C6 */	"AL_Research/Search_Browser",
/* 1C7 */	"AL_Audio_Player",
/* 1C8 */	"Reserved",
/* 1C9 */	"Reserved",
/* 1CA */	"Reserved",
/* 1CB */	"Reserved",
/* 1CC */	"Reserved",
/* 1CD */	"Reserved",
/* 1CE */	"Reserved",
/* 1CF */	"Reserved",
/* 1D0 */	"Reserved",
/* 1D1 */	"Reserved",
/* 1D2 */	"Reserved",
/* 1D3 */	"Reserved",
/* 1D4 */	"Reserved",
/* 1D5 */	"Reserved",
/* 1D6 */	"Reserved",
/* 1D7 */	"Reserved",
/* 1D8 */	"Reserved",
/* 1D9 */	"Reserved",
/* 1DA */	"Reserved",
/* 1DB */	"Reserved",
/* 1DC */	"Reserved",
/* 1DD */	"Reserved",
/* 1DE */	"Reserved",
/* 1DF */	"Reserved",
/* 1E0 */	"Reserved",
/* 1E1 */	"Reserved",
/* 1E2 */	"Reserved",
/* 1E3 */	"Reserved",
/* 1E4 */	"Reserved",
/* 1E5 */	"Reserved",
/* 1E6 */	"Reserved",
/* 1E7 */	"Reserved",
/* 1E8 */	"Reserved",
/* 1E9 */	"Reserved",
/* 1EA */	"Reserved",
/* 1EB */	"Reserved",
/* 1EC */	"Reserved",
/* 1ED */	"Reserved",
/* 1EE */	"Reserved",
/* 1EF */	"Reserved",
/* 1F0 */	"Reserved",
/* 1F1 */	"Reserved",
/* 1F2 */	"Reserved",
/* 1F3 */	"Reserved",
/* 1F4 */	"Reserved",
/* 1F5 */	"Reserved",
/* 1F6 */	"Reserved",
/* 1F7 */	"Reserved",
/* 1F8 */	"Reserved",
/* 1F9 */	"Reserved",
/* 1FA */	"Reserved",
/* 1FB */	"Reserved",
/* 1FC */	"Reserved",
/* 1FD */	"Reserved",
/* 1FE */	"Reserved",
/* 1FF */	"Reserved",
/* 200 */	"Generic_GUI_Application_Controls",
/* 201 */	"AC_New",
/* 202 */	"AC_Open",
/* 203 */	"AC_Close",
/* 204 */	"AC_Exit",
/* 205 */	"AC_Maximize",
/* 206 */	"AC_Minimize",
/* 207 */	"AC_Save",
/* 208 */	"AC_Print",
/* 209 */	"AC_Properties",
/* 20A */	"Reserved",
/* 20B */	"Reserved",
/* 20C */	"Reserved",
/* 20D */	"Reserved",
/* 20E */	"Reserved",
/* 20F */	"Reserved",
/* 210 */	"Reserved",
/* 211 */	"Reserved",
/* 212 */	"Reserved",
/* 213 */	"Reserved",
/* 214 */	"Reserved",
/* 215 */	"Reserved",
/* 216 */	"Reserved",
/* 217 */	"Reserved",
/* 218 */	"Reserved",
/* 219 */	"Reserved",
/* 21A */	"AC_Undo",
/* 21B */	"AC_Copy",
/* 21C */	"AC_Cut",
/* 21D */	"AC_Paste",
/* 21E */	"AC_Select_All",
/* 21F */	"AC_Find",
/* 220 */	"AC_Find_and_Replace",
/* 221 */	"AC_Search",
/* 222 */	"AC_Go_To",
/* 223 */	"AC_Home",
/* 224 */	"AC_Back",
/* 225 */	"AC_Forward",
/* 226 */	"AC_Stop",
/* 227 */	"AC_Refresh",
/* 228 */	"AC_Previous_Link",
/* 229 */	"AC_Next_Link",
/* 22A */	"AC_Bookmarks",
/* 22B */	"AC_History",
/* 22C */	"AC_Subscriptions",
/* 22D */	"AC_Zoom_In",
/* 22E */	"AC_Zoom_Out",
/* 22F */	"AC_Zoom",
/* 230 */	"AC_Full_Screen_View",
/* 231 */	"AC_Normal_View",
/* 232 */	"AC_View_Toggle",
/* 233 */	"AC_Scroll_Up",
/* 234 */	"AC_Scroll_Down",
/* 235 */	"AC_Scroll",
/* 236 */	"AC_Pan_Left",
/* 237 */	"AC_Pan_Right",
/* 238 */	"AC_Pan",
/* 239 */	"AC_New_Window",
/* 23A */	"AC_Tile_Horizontally",
/* 23B */	"AC_Tile_Vertically",
/* 23C */	"AC_Format",
/* 23D */	"AC_Edit",
/* 23E */	"AC_Bold",
/* 23F */	"AC_Italics",
/* 240 */	"AC_Underline",
/* 241 */	"AC_Strikethrough",
/* 242 */	"AC_Subscript",
/* 243 */	"AC_Superscript",
/* 244 */	"AC_All_Caps",
/* 245 */	"AC_Rotate",
/* 246 */	"AC_Resize",
/* 247 */	"AC_Flip_horizontal",
/* 248 */	"AC_Flip_Vertical",
/* 249 */	"AC_Mirror_Horizontal",
/* 24A */	"AC_Mirror_Vertical",
/* 24B */	"AC_Font_Select",
/* 24C */	"AC_Font_Color",
/* 24D */	"AC_Font_Size",
/* 24E */	"AC_Justify_Left",
/* 24F */	"AC_Justify_Center_H",
/* 250 */	"AC_Justify_Right",
/* 251 */	"AC_Justify_Block_H",
/* 252 */	"AC_Justify_Top",
/* 253 */	"AC_Justify_Center_V",
/* 254 */	"AC_Justify_Bottom",
/* 255 */	"AC_Justify_Block_V",
/* 256 */	"AC_Indent_Decrease",
/* 257 */	"AC_Indent_Increase",
/* 258 */	"AC_Numbered_List",
/* 259 */	"AC_Restart_Numbering",
/* 25A */	"AC_Bulleted_List",
/* 25B */	"AC_Promote",
/* 25C */	"AC_Demote",
/* 25D */	"AC_Yes",
/* 25E */	"AC_No",
/* 25F */	"AC_Cancel",
/* 260 */	"AC_Catalog",
/* 261 */	"AC_Buy/Checkout",
/* 262 */	"AC_Add_to_Cart",
/* 263 */	"AC_Expand",
/* 264 */	"AC_Expand_All",
/* 265 */	"AC_Collapse",
/* 266 */	"AC_Collapse_All",
/* 267 */	"AC_Print_Preview",
/* 268 */	"AC_Paste_Special",
/* 269 */	"AC_Insert_Mode",
/* 26A */	"AC_Delete",
/* 26B */	"AC_Lock",
/* 26C */	"AC_Unlock",
/* 26D */	"AC_Protect",
/* 26E */	"AC_Unprotect",
/* 26F */	"AC_Attach_Comment",
/* 270 */	"AC_Delete_Comment",
/* 271 */	"AC_View_Comment",
/* 272 */	"AC_Select_Word",
/* 273 */	"AC_Select_Sentence",
/* 274 */	"AC_Select_Paragraph",
/* 275 */	"AC_Select_Column",
/* 276 */	"AC_Select_Row",
/* 277 */	"AC_Select_Table",
/* 278 */	"AC_Select_Object",
/* 279 */	"AC_Redo/Repeat",
/* 27A */	"AC_Sort",
/* 27B */	"AC_Sort_Ascending",
/* 27C */	"AC_Sort_Descending",
/* 27D */	"AC_Filter",
/* 27E */	"AC_Set_Clock",
/* 27F */	"AC_View_Clock",
/* 280 */	"AC_Select_Time_Zone",
/* 281 */	"AC_Edit_Time_Zones",
/* 282 */	"AC_Set_Alarm",
/* 283 */	"AC_Clear_Alarm",
/* 284 */	"AC_Snooze_Alarm",
/* 285 */	"AC_Reset_Alarm",
/* 286 */	"AC_Synchronize",
/* 287 */	"AC_Send/Receive",
/* 288 */	"AC_Send_To",
/* 289 */	"AC_Reply",
/* 28A */	"AC_Reply_All",
/* 28B */	"AC_Forward_Msg",
/* 28C */	"AC_Send",
/* 28D */	"AC_Attach_File",
/* 28E */	"AC_Upload",
/* 28F */	"AC_Download",
/* 290 */	"AC_Set_Borders",
/* 291 */	"AC_Insert_Row",
/* 292 */	"AC_Insert_Column",
/* 293 */	"AC_Insert_File",
/* 294 */	"AC_Insert_Picture",
/* 295 */	"AC_Insert_Object",
/* 296 */	"AC_Insert_Symbol",
/* 297 */	"AC_Save_and_Close",
/* 298 */	"AC_Rename",
/* 299 */	"AC_Merge",
/* 29A */	"AC_Split",
/* 29B */	"AC_Disribute_Horizontally",
/* 29C */	"AC_Distribute_Vertically",
};

int usage_consumer_num = sizeof(_usage_consumer) / sizeof(_usage_consumer[0]);
const char **usage_consumer = _usage_consumer;
